package aiku.numericalcontroloa.Service.OrderManagement;

import aiku.numericalcontroloa.Base.Utils.Result;
import aiku.numericalcontroloa.Model.Dto.OrderManagement.OrderBillingDto;
import aiku.numericalcontroloa.Model.Dto.OrderManagement.OrderDto;
import aiku.numericalcontroloa.Model.Dto.OrderManagement.RoyaltyDto;
import aiku.numericalcontroloa.Model.Dto.PageSelect;
import aiku.numericalcontroloa.Model.Entity.Current;
import aiku.numericalcontroloa.Model.Entity.Devices;
import aiku.numericalcontroloa.Model.Entity.OrderManagement.OrderBilling;

/**
 * 订单管理服务层
 * @Author 黄广庭
 * @Date 2024/3/19 12:01
 */
public interface OrderService {
    /**
     * 添加订单
     * @param orderDto
     * @return
     */
    Result addOrder(OrderDto orderDto);

    /**
     * 根据id删除订单
     * @param orderDto
     * @return
     */
    Result deleteOrder(OrderDto orderDto);

    /**
     * 修改订单
     * @param orderDto
     * @return
     */
    Result updateOrder(OrderDto orderDto);

    /**
     * 修改订单状态
     * @param orderDto
     * @return
     */
    Result updateOrderStatus(OrderDto orderDto);

    /**
     * 获取订单列表
     * @param orderDto
     * @return
     */
    Result getOrderList(OrderDto orderDto);

    /**
     * 获取订单详情
     * @param orderDto
     * @return
     */
    Result getOrder(OrderDto orderDto);

    /**
     * 订单交付，上传验收单，物流信息，签订合同/开销单
     * @param orderDto
     * @return
     */
    Result orderDelivery(OrderDto orderDto);

    /**
     * 下单通过
     * @param orderDto
     * @return
     */
    Result orderExamine(OrderDto orderDto);

    /**
     * 获取订单账单列表
     * @param orderBillingDto
     * @return
     */
    Result getOrderBillingList(OrderBillingDto orderBillingDto);

    /**
     * 收款申请
     * @param orderBilling
     * @return
     */
    Result application(OrderBilling orderBilling);

    /**
     * 收款审核
     * @param orderDto
     * @return
     */
    Result collectionAudit(OrderDto orderDto);

    /**
     * 更换业务员
     * @param orderDto
     * @return
     */
    Result changeSalesman(OrderDto orderDto);

    /**
     * 更换售后员
     * @param orderDto
     * @return
     */
    Result changeAfterSale(OrderDto orderDto);

    /**
     * 业务员，售后员提成
     * @param royaltyDto
     * @return
     */
    Result orderRoyalty(RoyaltyDto royaltyDto);

    Result getReminderDays();

    Result updateReminderDays(Current current);


}
